Image build¶
Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.
SDK Download and Compilation¶
Supported Models¶
This document applies to the Quectel PI RK3576 M2 board. The project name is QSM610ZAPWFPI, and this document uses firmware with a Debian root filesystem (DEB) as an example. The build entry point is quectel_build/compile/build.sh. The complete workflow sequentially runs buildconfig, buildall and buildpackage, and flashing uses flash.sh in the SDK root directory.
The current M2 Debian build configuration is as follows:
Field |
Current M2 Debian Configuration |
|---|---|
SoC |
Rockchip RK3576 |
Board Type |
M2 |
Project Name |
|
Build Type |
|
Rootfs System |
|
Defconfig |
|
Build Script |
|
Download SDK¶
You can obtain the Linux SDK for Quectel PI RK3576 M2 through the following two methods:
Method 1: Download from the Official Website¶
Please visit the Quectel DevCenter resources download page to download the Quectel PI RK3576 M2 SDK compile resource package. (The download address will be added after release.)
On the resources download page, select the Quectel Pi product type, then select the Firmware type, and find the corresponding Quectel PI RK3576 M2 SDK Compile Resource Package to download.
The downloaded SDK package contains:
Pre-compiled firmware: Image files that can be directly used for flashing
Compilation toolchain (optional): For custom development, secondary compilation can be performed
Method 2: Clone from GitHub¶
You can also clone the SDK source code directly from the GitHub repository. (The repository address will be added after release.)
After cloning, enter the SDK main directory to start using it.
Quick Start
If you only need to use the official firmware for flashing, you can skip the compilation steps below and directly jump to the Get Images section. After unzipping the SDK package, you can obtain all image files required for flashing.
Custom Compilation (Optional)¶
Note: The following sections are for developers who need to modify source code or customize configurations. If you only use the official firmware, you can skip this part.
Build Environment¶
Go to the RK3576 SDK directory and use source to load the unified build script. This operation registers the build functions only in the current terminal session; rerun it after opening a new terminal.
cd /SDK
source quectel_build/compile/build.sh
After the script is loaded successfully, the following commands are available:
Command |
Purpose |
|---|---|
|
Select the board type, root filesystem, and Secure Boot combination, and generate the configuration |
|
Perform a complete firmware build based on the current configuration |
|
Organize the images and generate the Release and Factory directories |
|
View the currently active build configuration |
The primary combinations supported by M2 are as follows:
Parameter |
Root Filesystem |
Description |
|---|---|---|
|
Buildroot |
Use |
|
Debian |
Standard Debian build used in this document |
|
Debian |
For M2, passing SEC alone is equivalent to Debian with Secure Boot signing |
|
Debian |
Explicitly specify Debian with Secure Boot signing |
Step 1: Execute the following command to configure the M2 Debian build environment:
buildconfig QSM610ZAPWFPI QSM610ZAPWFRD1A01_BD01BP01K0M01_QDP_LP6.1.118.01.001 DEB
After configuration succeeds, the script identifies the board type and build type, and generates quectel_build/config/quectel-buildconfig-gen.h and quectel_build/config/buildconfig.sh. You will see the current build configuration information. The key output observed in this test is as follows:
Project Name = QSM610ZAPWFPI
Firmware Version = QSM610ZAPWFRD1A01_BD01BP01K0M01_QDP_LP6.1.118.01.001
Board = M2
Build Type = DEB
Defconfig = rockchip_rk3576_quectel_pi_m2_debian_defconfig
Rootfs System = debian
Build Script = build_quectel_pi_m2.sh
Git Commit = d97cfde78
To review the configuration, run:
buildconfig_verify
Full Build on the AP Side¶
Step 2: Execute the following command to perform the full build:
buildall
buildall first applies the M2 Debian defconfig, checks the Debian build prerequisites, and then performs a complete image build. After a successful build, intermediate artifacts are located in the SDK’s rockdev/ and output/ directories, among others. The total build time depends on host performance and cache state.
One-Click Packaging¶
Step 3: Execute the following command to perform one-click packaging:
buildpackage
Before packaging, the script checks whether output/update/Image/update.img exists and whether there are newer component images in rockdev/; if update.img is missing or out of date, it is regenerated first. After packaging is complete, all image files required for flashing are copied to the Release directory named after the firmware version under quectel_build/:
Output Directory |
Purpose |
|---|---|
|
Release package, excluding |
The package contents come from rockdev/, output/update/Image/update.img and output/; the actual file set depends on the output of the current build.
Get Images¶
Depending on your usage scenario, there are two ways to obtain image files:
Method 1: Use the Official Firmware Directly (Recommended)¶
Unzip the firmware package downloaded from the Quectel DevCenter, and you can find all image files required for flashing in the unzipped directory. (The official firmware download address will be added after release.)
Method 2: Obtain Images After a Custom Build¶
If you have completed the above custom compilation steps, the packaged images are located in the Release directory named after the firmware version under quectel_build/ in the SDK, for example QSM610ZAPWFRD1A01_BD01BP01K0M01_QDP_LP6.1.118.01.001/.
Image File Description¶
The image directory contains the following main files:
Complete firmware:
update.img - Complete firmware package, used for full-package flashing
Bootloader and partitions:
MiniLoaderAll.bin - Loader boot file
uboot.img - U-Boot boot image
parameter.txt - Partition parameter file
System and partition images:
boot.img - Kernel image
rootfs.img - Root filesystem image
recovery.img - Recovery image
misc.img - Misc partition image
oem.img - OEM partition image
userdata.img - Userdata partition image
The actual file set depends on the output of the current build.